/* 
	https://blog.csdn.net/Matutinal/article/details/119725237
	
	出一个数判断是否是闰年
	闰年规则：
	
	​ 普通闰年：公历年份是4的倍数，且不是100的倍数的，为闰年（如2004年、2020年等就是闰年）。
	
	​ 世纪闰年：公历年份是整百数的，必须是400的倍数才是闰年（如1900年不是闰年，2000年是闰年）。
 */

function leap_year(){
	var leap_year = prompt("请输入一个年份：");
	if((leap_year % 4 == 0 && leap_year % 100 != 0)||leap_year % 400 == 0){
		//注：&&的优先级高于||，所if语句来面的||前面的表达式可以不用加外括号。
		alert(leap_year+"是闰年")
	}
	
}

/*
	判断是否某年的某月有多少天
	switch(表达式){
	case 常量表达式1: 语句1;
	case 常量表达式2: 语句2;
	…
	case 常量表达式n: 语句n;
	default: 语句n+1;
	}
	
	注意：
	
	​ 常量是固定值，在程序执行期间不会改变。
	
	​ 常量表达式的值只能是：数字和字符、字符串、布尔数、null。
	
	​ 各常量表达式的值不能相同。
	
	什么是表达式？：
	
	​ 表达式是由一系列 运算符 和 操作数 组成的。表达式是由数字、算符、数字分组符号（括号）、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合。只含常量的表达式叫常量表达式
	
	default执行条件：
	
	​ **1、**default只有在case匹配失败的时候才会执行；**2、**case匹配成功了，但缺少了break语句；

	原文链接：https://blog.csdn.net/Matutinal/article/details/119725237
*/
function mothDay(y){
	var year = prompt("请输入一份年份：");
	var month = parseInt(prompt("请输入一个月份："));
	switch(month){
		case 1:
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		case 12:
			alert(month+"月有31天");
			break;
		case 2:
			if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){
				alert(month+"月有28天");//闰月
			}else{
				alert(month+"月有29天");
			}
		case 4:
		case 6:
		case 9:
		case 11:
			alert(month+"月有30天");
			break;
		default:
			break;
		
	}
}


/*
 
	输入一个带有年月日的字符串，判断这天位于当年的第几天
	思路：年：判断年份是否为闰年----用于确定2月的天数；
	
	​ 月：switch 语句累加输入月份之前的总天数；
	
	这里采用贯穿，其中要将case语句中1~12倒序匹配，原因是贯穿的缺点在于------如果没有break语句，case语句一旦匹配就会一直执行下去。如果按照case 的常量表达式按112顺序匹配，则如果输入的是4月份，那么累加的天数将会是4月份以后的所有月份的天数，所以要将case语句中112倒序匹配，这样如果输入的是4月份，则累加的是4、3、2、1月份的内容。
	
	现在问题来了，如果输入的是4月21日，那么实际需要累加的1~3月的月份天数再加上4月的21天。所以再获取到的month要进行-1，相应的case 语句匹配的就是输入的月份的前一个月，故case常量表达式的匹配 值式12~1。
	
	​ 日： 最后加上具体的天数。
	————————————————
	原文链接：https://blog.csdn.net/Matutinal/article/details/119725237
 
 */

function dateday(){
	var data=document.getElementById("demo3").value;//接收输入的带有年月日的字符串
	var year=data.slice(0,4);//利用slice()函数切割字符串
	var month=parseInt(data.slice(4,6))-1;
	var day=parseInt(data.slice(6,8));//转换类型，因为后面要使用到算术运算，必须转换成数字才能进行运算
	console.log(year);//控制台输出检查是否正确获取到值
	console.log(month);
	console.log(day);
	var result=0;
			switch (month) {
				case 12:result+=31;
				case 11:result+=30;
				case 10:result+=31; 
				case 9:result+=30; 
				case 8:result+=31; 
				case 7:result+=31;
				case 6:result+=30; 
				case 5:result+=31; 
				case 4:result+=30;
				case 3:result+=31;
				case 2:if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
						result+=28;
					} else {
						result+=29;
					};
				case 1:result+=31;//12月
				default:break;
			}
			result+=day;
			alert("第"+result+"天");
		}
}




//抽奖系统,随机抽取获奖的幸运用户
function getRandom(x){
	var n1 = Math.random();
	var n2 = n1 * x;
	var n3 = Math.floor(n2);//返回小于参数x的最大整数,即对浮点数向下取整
	return n3;
}

/**
	https://baijiahao.baidu.com/s?id=1710607486044397860&wfr=spider&for=pc
	
	Math.floor() 返回小于或等于一个给定数字的最大整数。
	
	可以理解 Math.floor()为向下取整。
	
	与其相对的是 Math.ceil() ，这个是向上取整。
	
	math.floor()函数
	https://blog.csdn.net/qq_40074819/article/details/105179478
	
	
	HTML引入JavaScript的三种常用方式汇总
	https://blog.csdn.net/YXXXYX/article/details/120619666
 */